% 假设输入数据为X (33年 x N个特征)，Y为医疗卫生机构数量 (33年 x 1)
% X 是过去33年每年的多个特征数据，比如人口、GDP等
% Y 是过去33年每年的医疗卫生机构数量
clc,clear;
close all;
warning off;
% 数据预处理
% 累加生成序列
X1 = cumsum(X, 1);  % 对输入变量进行累加生成序列
Y1 = cumsum(Y);     % 对输出变量进行累加生成序列

% 构建B和Y矩阵
B = [-0.5*(X1(1:end-1,:) + X1(2:end,:)), ones(size(X1,1)-1,1)];
Y = Y1(2:end);

% 计算GM(1,N)模型的参数
u = (B'*B) \ (B'*Y);

% 提取模型参数
a = u(1:end-1);
b = u(end);

% 预测未来10年的数据
n = size(Y, 1);
Y_pred = zeros(10, 1);  % 用于存储预测值
for k = 1:10
    Y_pred(k) = (Y(end) - b/a) * exp(a * k) + b/a;
end

% 结果展示
years_future = 2024:2033;
disp('未来10年（2024-2033年）的医疗卫生机构数量预测：');
disp(table(years_future', Y_pred, 'VariableNames', {'年份', '预测的医疗卫生机构数量'}));

% 绘制预测结果图
figure;
plot(1990:2023, Y, '-o', 'DisplayName', '历史数据');
hold on;
plot(years_future, Y_pred, '-x', 'DisplayName', '预测数据');
xlabel('年份');
ylabel('医疗卫生机构数量');
title('中国未来10年（2024-2033年）医疗卫生机构数量预测');
legend('show');
hold off;
